//package com.example.config.redis;
//
//import org.springframework.cache.annotation.EnableCaching;
//import org.springframework.cache.interceptor.KeyGenerator;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.data.redis.connection.RedisConnectionFactory;
//import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
//import org.springframework.data.redis.serializer.RedisSerializer;
//import org.springframework.data.redis.serializer.StringRedisSerializer;
//
//import java.lang.reflect.Method;
//import java.util.Arrays;
//
//@Configuration
//@EnableCaching  // 开启缓存注解配置
//public class RedisCacheConfig {
//
//    @Bean
//    public RedisTemplate<Object,Object> redisTemplate(){
//        RedisTemplate<Object,Object> template = new RedisTemplate<Object, Object>();
//        template.setConnectionFactory(redisConnectionFactory());
//        template.setKeySerializer(keySerializer());
//        template.setHashKeySerializer(keySerializer());
//        template.setValueSerializer(valueSerializer());
//        template.setHashValueSerializer(valueSerializer());
//        return template;
//    }
//
//    @Bean
//     RedisConnectionFactory redisConnectionFactory(){
//        return new JedisConnectionFactory();
//    }
//
//    @Bean
//    RedisSerializer<String>  keySerializer(){
//        return new StringRedisSerializer();
//    }
//
//    @Bean
//    RedisSerializer<Object> valueSerializer(){
//        return  new GenericJackson2JsonRedisSerializer();
//    }
//
//
//    //自定义key值生成器
//    @Bean("myKeyGenerator")
//    public KeyGenerator KeyGenerator(){
//        return new KeyGenerator(){
//            @Override
//            public Object generate(Object o, Method method, Object... objects) {
//                System.out.println(method.getName()+ Arrays.asList(objects));
//                return method.getName()+ Arrays.asList(objects) ;
//            }
//        };
//    }
//
//}
